package com.oracle.entity;

import com.oracle.pojo.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

@Component
public class ShoppingCart implements Serializable {

    private Map<Integer,CartItem> map = new HashMap<Integer,CartItem>();


    //添加商品
    public void add(Book book,Integer num){
        if (map.containsKey(book.getBid())){
            CartItem cartItem = map.get(book.getBid());
            cartItem.setNum(cartItem.getNum()+num);
        }else {
            CartItem cartItem = new CartItem();
            cartItem.setBook(book);
            cartItem.setNum(num);
            map.put(book.getBid(),cartItem);
        }
    }

    //删除某一项
    public void remove(Integer bid){
        map.remove(bid);
    }

    //清空购物车
    public void clear(){
        map.clear();
    }

    //修改某一项的数量
    public void changeNum(Integer bid,Integer num){
        CartItem cartItem = map.get(bid);
        cartItem.setNum(num);
        map.put(bid,cartItem);
    }

    //得出总价
    public BigDecimal getTotal(){
        BigDecimal total = new BigDecimal(0);
        Collection<CartItem> values = map.values();
        Iterator<CartItem> iterator = values.iterator();
        while (iterator.hasNext()){
            CartItem next = iterator.next();

            total = total.add(next.getBook().getBprice().multiply(new BigDecimal(next.getNum())))  ;
        }
        return total;
    }

    public Map<Integer, CartItem> getMap() {
        return map;
    }

    public Integer getSize(){
        return map.size();
    }
}
